package com.ldp.designpatterns.study.interpreter;

import com.ldp.designpatterns.study.interpreter.abstractExpression.AddExpression;
import com.ldp.designpatterns.study.interpreter.abstractExpression.Expression;
import com.ldp.designpatterns.study.interpreter.abstractExpression.NumberExpression;
import com.ldp.designpatterns.study.interpreter.abstractExpression.SubtractExpression;

/**
 * @ClassName InterpreterTest
 * @Description TODO  在这个示例中，我们构建了一个简单的数学表达式解释器，用于解释并计算基本的加法和减法表达式。
 * TODO 这展示了解释器模式如何工作，将表达式解释成实际的结果。
 * TODO 在实际应用中，解释器模式可以用于更复杂的领域，如编程语言解释器或规则引擎。
 * @Author lindipei
 * @Date 2023/10/18 16:22
 */
public class InterpreterTest {
    public static void main(String[] args) {
        // 构建表达式：2 + (3 - 1)
        Expression expression = new AddExpression(
                new NumberExpression(2),
                new SubtractExpression(
                        new NumberExpression(3),
                        new NumberExpression(1)
                )
        );

        // 解释并计算表达式的值
        int result = expression.interpret();
        System.out.println("Result: " + result); // 输出: Result: 4
    }
}
